package com.loveprogrammer.eternity.model.attack;

import com.loveprogrammer.eternity.enums.AttackTypeEnum;
import com.loveprogrammer.eternity.model.effect.AbstractEffect;
import com.loveprogrammer.eternity.skill.Skill;
import com.loveprogrammer.eternity.skill.State;
import com.loveprogrammer.eternity.skill.support.states.AbstractState;

/**
 * @version 1.0.0
 * @description:
 * @author: eric
 * @date: 2022-12-09 17:22
 **/
public class AttackEntity {

    public AttackEntity(Skill skill, int harm, AttackTypeEnum attackType,
                        int ignoreArmor, int ignoreResistance, int realDamage) {
        this.skill = skill;
        this.harm = harm;
        this.attackType = attackType;
        IgnoreArmor = ignoreArmor;
        IgnoreResistance = ignoreResistance;
        this.realDamage = realDamage;
    }

    public AttackEntity(int harm, AttackTypeEnum attackType) {
        this.harm = harm;
        this.attackType = attackType;
    }

    public AttackEntity(Skill skill, int harm, AttackTypeEnum attackType) {
        this.skill = skill;
        this.harm = harm;
        this.attackType = attackType;
    }

    public AttackEntity(State state, int harm, AttackTypeEnum attackType) {
        this.state = state;
        this.harm = harm;
        this.attackType = attackType;
    }

    /**
     * 技能
     **/
    private Skill skill;

    private State state;

    private int harm;

    private AttackTypeEnum attackType;

    /**
     * 无视护甲
     **/
    private int IgnoreArmor;

    /**
     * 无视抗性
     **/
    private int IgnoreResistance;

    /**
     * 真实伤害
     **/
    private int realDamage;

    private int hitRateAdd;

    public Skill getSkill() {
        return skill;
    }

    public void setSkill(Skill skill) {
        this.skill = skill;
    }

    public int getHarm() {
        return harm;
    }

    public void setHarm(int harm) {
        this.harm = harm;
    }

    public AttackTypeEnum getAttackType() {
        return attackType;
    }

    public void setAttackType(AttackTypeEnum attackType) {
        this.attackType = attackType;
    }

    public int getIgnoreArmor() {
        return IgnoreArmor;
    }

    public void setIgnoreArmor(int ignoreArmor) {
        IgnoreArmor = ignoreArmor;
    }

    public int getIgnoreResistance() {
        return IgnoreResistance;
    }

    public void setIgnoreResistance(int ignoreResistance) {
        IgnoreResistance = ignoreResistance;
    }

    public int getRealDamage() {
        return realDamage;
    }

    public void setRealDamage(int realDamage) {
        this.realDamage = realDamage;
    }

    public State getState() {
        return state;
    }

    public void setState(State state) {
        this.state = state;
    }

    public int getHitRateAdd() {
        return hitRateAdd;
    }

    public void setHitRateAdd(int hitRateAdd) {
        this.hitRateAdd = hitRateAdd;
    }
}
